package com.neuedu.action;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.alibaba.fastjson.JSONObject;
import com.neuedu.model.UserMessage;
import com.neuedu.model.Users;
import com.neuedu.service.UserMessageService;

@Controller
@RequestMapping(value="/usermessage")
public class UserMessageAction {

	@Autowired
	private UserMessageService userMessageService;
	
	@RequestMapping(value = "/findAll")
	public void findAll(HttpServletRequest request,HttpServletResponse response)throws Exception{
		/*
		 * 从客户端接收easyui发送过来的分页控制参数
		 * page指查询第几页，rows指每页查询多少条
		 * 这两个参数由easyui进行计算并发送到服务端
		 */
		int page=Integer.parseInt(request.getParameter("page"));
		int rows=Integer.parseInt(request.getParameter("rows"));
		
		Map<String, Object> map=new HashMap<String, Object>();
		Map<String, Object> pageMap=new HashMap<String, Object>();
		pageMap.put("startPage", (page-1)*rows); //从第几条数据开始查询
		pageMap.put("endPage", rows);	//每页查询多少条记录
		//进行分页查询
		System.out.println("11111111111111111111");
		List<UserMessage> u=userMessageService.findAll(pageMap);
		System.out.println("22222222222222222");
		//进行查询记录总数，把记录总数发送给easy UI，用于分页计算
		int total=userMessageService.countUserMessage();
		
		//前后端分离的程序结构，大部分会使用json数据结构进行数据传递（也有使用xml传递的）
		map.put("rows", u);
		map.put("total", total);
		
		//使用阿里巴巴的fastjon把java对象转换成json字符串
		String str=JSONObject.toJSONString(map);
		/*
		 * 使用servlet技术，把json数据字符串从服务器发送到
		 * 浏览器客户端（easy ui，由easy ui进行数据显示
		 */
		response.getWriter().write(str);
	}
	
	@RequestMapping(value="addUserMessage")
	public void addUserMessage(UserMessage userMessage,HttpServletRequest request,HttpServletResponse response) throws Exception{
	/*	String userName=request.getParameter("userName");
	//	int userNo=Integer.parseInt(request.getParameter("userNo"));
		String nickName=request.getParameter("nickName");
		String password=request.getParameter("password");
		String userEmail=request.getParameter("userEamil");
		String userPhone=request.getParameter("userPhone");
		String userDate = request.getParameter("userDate");
		//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String format="yyyy-MM-dd";
		Date date=new SimpleDateFormat(format).parse(userDate);
		UserMessage u =new UserMessage();
		u.setNickName(nickName);
		u.setPassword(password);
		u.setUserDate(date);
		u.setUserEmail(userEmail);
		u.setUserName(userName);
	//	u.setUserNo(userNo);
		u.setUserPhone(userPhone);
		*/
		/*
		 * 调用业务逻辑层进行处理，
		 * 返回数据库表数据更新的行数：更新成功数量大于等于1，更新失败返回0
		 */
		int res=userMessageService.addUserMessage(userMessage);
		System.out.println(res);
		Map<String, Object> map=new HashMap<String, Object>();
		if(res>0){
			map.put("success", true);
		}else{
			map.put("success", false);
			map.put("errorMsg", "Save user fail !!!");
		}
		System.out.println("33333333333");
		String str=JSONObject.toJSONString(map);
		response.getWriter().write(str);
	}
	
	@RequestMapping(value="updateUserMessage")
	public void updateUserMessage(UserMessage userMessage,HttpServletRequest request,HttpServletResponse response) throws Exception{
		int res=userMessageService.updateUserMessage(userMessage);
		Map<String, Object> map=new HashMap<String, Object>();
		if(res>0){
			map.put("success", true);
		}else{
			map.put("success", false);
			map.put("errorMsg", "update user fail !!!");
		}
		String str=JSONObject.toJSONString(map);
		response.getWriter().write(str);
	}
	
	@RequestMapping(value="deleteUserMessage")
	public void deleteUserMessage(UserMessage userMessage,HttpServletRequest request,HttpServletResponse response) throws Exception{
		int res=userMessageService.deleteUserMessage(userMessage.getUserNo());
		Map<String, Object> map=new HashMap<String, Object>();
		if(res>0){
			map.put("success", true);
		}else{
			map.put("success", false);
			map.put("errorMsg", "update user fail !!!");
		}
		String str=JSONObject.toJSONString(map);
		response.getWriter().write(str);
	}
	
	@RequestMapping("/login")
	public void login(UserMessage userMessage,
			    HttpServletRequest request,HttpServletResponse response) throws Exception{
		
		//调用业务逻辑层进行处理，进行用户的登录
		UserMessage ret = userMessageService.findUserMessageByName(userMessage);
		
		if(ret!=null){
			//登录成功 - 记录用户的session会话中，并跳转Dao管理首页
			request.getSession().setAttribute("LOGIN_USER", ret);
			
			response.sendRedirect(request.getContextPath()+"/index.jsp");
		}else{
			//登录失败,返回登录页面
			response.sendRedirect(request.getContextPath()+"/login.jsp");
		}	
	}
	
	@RequestMapping("/logout")
	public void logout( HttpServletRequest request,HttpServletResponse response) throws Exception{
	
	//使会话失效
	request.getSession().invalidate();	

	//返回登录界面
	response.sendRedirect(request.getContextPath()+"/login.jsp");
	}
	
	
	
	
}
